home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 2 / AACD 2.iso / AACD / Programming / NRCOBOL1g / COBFILES / ADVERTS3.COB < prev    next >
Text File  |  1997-06-25  |  24KB  |  535 lines

  1.        IDENTIFICATION DIVISION.
  2.        PROGRAM-ID.   ADVERTS3.
  3.       *PROGRAM DISCRIPTION.
  4.       *  A program to print an income report for an advertising agency.
  5.       * The advertisements will be in several different newspapers
  6.       * and will be grouped according to the catergory of ad.
  7.       * The program uses table lookup filess to translate the codes from
  8.       * the input file to report data, printer optioned out!.
  9.       *
  10.       *AUTHOR.        cHArRiOTt.
  11.       *INSTALLATION.
  12.       *DATE-WRITTEN.  24th AUG 89.
  13.       *DATE-COMPILLED.
  14.       *SECURITY.
  15.        ENVIRONMENT DIVISION.
  16.  
  17.        CONFIGURATION SECTION.
  18.        SOURCE-COMPUTER.   AMSTRAD 1512.
  19.        OBJECT-COMPUTER.
  20.        INPUT-OUTPUT SECTION. 
  21.        FILE-CONTROL.
  22.             SELECT           IN-ADVERT-FILE
  23.             ASSIGN TO        DISK
  24.             ORGANIZATION  IS LINE SEQUENTIAL
  25.             ACCESS MODE   IS SEQUENTIAL
  26.             FILE STATUS   IS WS-FILE-STATUS.
  27.  
  28.             SELECT           IN-NEWSPAPER-NAME
  29.             ASSIGN TO        DISK
  30.             ORGANIZATION IS  INDEXED
  31.             ACCESS MODE  IS  RANDOM
  32.             RECORD KEY   IS  ER-PAPER-CODE
  33.             FILE STATUS  IS  WS-PAPER-FILE-STATUS.
  34.  
  35.             SELECT           IN-ADVERT-TYPE
  36.             ASSIGN TO        DISK
  37.             ORGANIZATION IS  INDEXED
  38.             ACCESS MODE  IS  RANDOM
  39.             RECORD KEY   IS  ER-IN-AD-CODE
  40.             FILE STATUS  IS  WS-AD-TYPE-STATUS.
  41.  
  42.             SELECT           OUT-INCOME-REPORT
  43.             ASSIGN TO        PRINTER
  44.             ORGANIZATION  IS SEQUENTIAL
  45.             ACCESS MODE   IS SEQUENTIAL
  46.             FILE STATUS   IS WS-PRINT-STATUS.
  47.       *
  48.        DATA DIVISION.
  49.        FILE SECTION.
  50.        FD IN-ADVERT-FILE
  51.             LABEL RECORD IS  STANDARD
  52.             VALUE OF FILE-ID IS "ADVERTS.FIL".
  53.        01 ER-ADVERT-FILE.
  54.            03 ER-NEWSPAPER-CODE     PIC X(3).
  55.            03 ER-AD-TYPE-CODE       PIC 9(3).
  56.            03 ER-ACCOUNT-NUMBER     PIC 9(6).
  57.            03 ER-ACCOUNT-NAME       PIC X(20).
  58.            03 ER-NUMBER-OF-LINES    PIC 99.
  59.            03 ER-AD-DURATION        PIC 999.
  60.            03 ER-STARTING-DATE      PIC 9(6).
  61.       *
  62.        FD IN-NEWSPAPER-NAME
  63.             LABEL RECORD IS  STANDARD
  64.             VALUE OF FILE-ID IS "PAPER.NAM".
  65.        01 ER-NEWSPAPER-NAME.
  66.            03 ER-PAPER-CODE         PIC X(3).
  67.            03 ER-PAPER-NAME         PIC X(25).
  68.       *
  69.        FD IN-ADVERT-TYPE
  70.             LABEL RECORD IS  STANDARD
  71.             VALUE OF FILE-ID IS "ADVERT.TYP".
  72.        01 ER-ADVERT-TYPE.
  73.            03 ER-IN-AD-CODE         PIC 9(3).
  74.            03 ER-TYPE-OF-AD         PIC X(20).
  75.            03 ER-PRICE-PER-LINE     PIC 9V99.
  76.       *
  77.        FD OUT-INCOME-REPORT
  78.             LABEL RECORD IS  OMITTED.
  79.        01 PRT-INCOME-REPORT.
  80.            03 FILLER                PIC A(80).
  81.       *
  82.        WORKING-STORAGE SECTION.
  83.        01 WS-ADVERT-FILE.
  84.            03 WS-NEWSPAPER-CODE     PIC X(3).
  85.            03 WS-AD-TYPE-CODE       PIC 9(3).
  86.            03 WS-ACCOUNT-NUMBER     PIC 9(6).
  87.            03 WS-ACCOUNT-NAME       PIC X(20).
  88.            03 WS-NUMBER-OF-LINES    PIC 99.
  89.            03 WS-AD-DURATION        PIC 999.
  90.            03 WS-STARTING-DATE.
  91.               05 WS-STARTING-DAY    PIC 99.
  92.               05 WS-STARTING-MONTH  PIC 99.
  93.               05 WS-STARTING-YEAR   PIC 99.
  94.       *
  95.        01 WS-NEWSPAPER-NAME.
  96.            03 WS-PAPER-CODE         PIC X(3).
  97.            03 WS-PAPER-NAME         PIC X(25).
  98.       *
  99.        01 WS-ADVERT-TYPE.
  100.            03 WS-IN-AD-CODE         PIC 9(3).
  101.            03 WS-TYPE-OF-AD         PIC X(20).
  102.            03 WS-PRICE-PER-LINE     PIC 9V99.
  103.       *
  104.        01 WS-REAL-DATE.
  105.            03 WS-REAL-YEAR          PIC XX.
  106.            03 WS-REAL-MONTH         PIC XX.
  107.            03 WS-REAL-DAY           PIC XX.
  108.        01 WS-TEMP-DATE.
  109.            03 WS-TEMP-DAY           PIC XX.
  110.            03 FILLER                PIC X  VALUE "/".
  111.            03 WS-TEMP-MONTH         PIC XX.
  112.            03 FILLER                PIC X  VALUE "/".
  113.            03 WS-TEMP-YEAR          PIC XX.
  114.       *
  115.        01 WS-COUNTERS.
  116.            03 WS-PAGE-COUNTER           PIC 99.
  117.            03 WS-LINE-COUNTER           PIC 99.
  118.            03 WS-NUMBER-OF-ACCOUNTS     PIC 9999.
  119.            03 WS-AVG-PRICE-PER-LINE     PIC 9999V99.
  120.            03 WS-TOTAL-LINES            PIC 999999.
  121.            03 WS-AVG-NUMBER-OF-LINES    PIC 999999.
  122.            03 WS-INCOME-EARNED          PIC 99999V99.
  123.            03 WS-TOTAL-INCOME-EARNED    PIC 99999V99.
  124.        01 WS-STOP-RUN-FLAG          PIC X   VALUE " ".
  125.        01 WS-END-FILE-FLAG          PIC X   VALUE " ".
  126.        01 WS-ABORT-READ-FLAG        PIC X   VALUE " ".
  127.        01 WS-FILE-STATUS            PIC XX  VALUE "00".
  128.        01 WS-PAPER-FILE-STATUS      PIC XX  VALUE "00".
  129.        01 WS-AD-TYPE-STATUS         PIC XX  VALUE "00".
  130.        01 WS-PRINT-STATUS           PIC XX  VALUE "00".
  131.        01 WS-RESPONCE               PIC X.
  132.            88  WS-RESPONCE-Q        VALUE  "Q" "q".
  133.            88  WS-RESPONCE-P        VALUE  "P" "p".
  134.            88  WS-RESPONCE-S        VALUE  "S" "s".
  135.            88  WS-RESPONCE-YN       VALUE  "Y" "N"
  136.                                            "y" "n".
  137.            88  WS-RESPONCE-Y        VALUE  "Y" "y".
  138.            88  WS-RESPONCE-N        VALUE  "N" "n".
  139.       *
  140.        01 PRINT-PROG-TITLE.
  141.            03 WS-PRT-TEMP-DATE       PIC X(8).
  142.            03 FILLER                 PIC X(14) VALUE SPACES.
  143.            03 FILLER                 PIC X(36) VALUE
  144.            "CLASSIFIED ADVERTISING INCOME REPORT".
  145.            03 FILLER                 PIC X(7)  VALUE SPACES.
  146.            03 FILLER                 PIC X(5)  VALUE "PAGE ".
  147.            03 WS-PRT-PAGE-COUNTER    PIC 99.
  148.        01 PRINT-RECORD.
  149.            03 PRT-PAPER-NAME.
  150.               05 FILLER   PIC X(5)   VALUE SPACES.
  151.               05 FILLER   PIC X(26)  VALUE "NEWSPAPER NAME          : ".
  152.               05 WS-PRT-PAPER-NAME   PIC X(25).
  153.            03 PRT-TYPE-OF-AD.
  154.               05 FILLER   PIC X(5)   VALUE SPACES.
  155.               05 FILLER   PIC X(26)  VALUE "TYPE OF ADVERT          : ".
  156.               05 WS-PRT-TYPE-OF-AD   PIC X(20).
  157.            03 PRT-ACCOUNT-NUMBER.
  158.               05 FILLER   PIC X(5)   VALUE SPACES.
  159.               05 FILLER   PIC X(26)  VALUE "ACCOUNT NUMBER          : ".
  160.               05 WS-PRT-ACCOUNT-NUMBER  PIC 9(6).
  161.            03 PRT-ACCOUNT-NAME.
  162.               05 FILLER   PIC X(5)   VALUE SPACES.
  163.               05 FILLER   PIC X(26)  VALUE "ACCOUNT NAME            : ".
  164.               05 WS-PRT-ACCOUNT-NAME PIC X(20).
  165.            03 PRT-NUMBER-OF-LINES.
  166.               05 FILLER   PIC X(5)   VALUE SPACES.
  167.               05 FILLER   PIC X(26)  VALUE "NUMBER OF LINES         : ".
  168.               05 WS-PRT-NUMBER-OF-LINES PIC Z9.
  169.            03 PRT-AD-DURATION.
  170.               05 FILLER   PIC X(5)   VALUE SPACES.
  171.               05 FILLER   PIC X(26)  VALUE "ADVERT'S DURATION (DAYS): ".
  172.               05 WS-PRT-AD-DURATION  PIC ZZ9.
  173.            03 PRT-PRICE-PER-LINE.
  174.               05 FILLER   PIC X(5)   VALUE SPACES.
  175.               05 FILLER   PIC X(29)  VALUE "PRICE PER LINE          : ".
  176.               05 WS-PRT-PRICE-PER-LINE PIC $9.99.
  177.            03 PRT-INCOME-EARNED.
  178.               05 FILLER   PIC X(5)   VALUE SPACES.
  179.               05 FILLER   PIC X(26)  VALUE "INCOME EARNED           : ".
  180.               05 WS-PRT-INCOME-EARNED  PIC $$$$9.99.
  181.        01 PRINT-TOTALS.
  182.            03 PRT-NUMBER-OF-ACCOUNTS.
  183.               05 FILLER   PIC X(5)   VALUE SPACES.
  184.               05 FILLER   PIC X(28)  VALUE "NUMBER OF ACCOUNTS      : ".
  185.               05 WS-PRT-NUMBER-OF-ACCOUNTS PIC ZZZ9.
  186.            03 PRT-AVG-NUMBER-OF-LINES.
  187.               05 FILLER   PIC X(5)   VALUE SPACES.
  188.               05 FILLER   PIC X(26)  VALUE "AVERAGE NUMBER OF LINES : ".
  189.               05 WS-PRT-AVG-NUMBER-OF-LINES PIC ZZZZZ9. 
  190.            03 PRT-AVG-PRICE-PER-LINE.
  191.               05 FILLER   PIC X(5)   VALUE SPACES.
  192.               05 FILLER   PIC X(27)  VALUE "AVERAGE PRICE PER LINE  : ".
  193.               05 WS-PRT-AVG-PRICE-PER-LINE      PIC $$$9.99.
  194.            03 PRT-TOTAL-INCOME-EARNED.
  195.               05 FILLER   PIC X(5)   VALUE SPACES.
  196.               05 FILLER   PIC X(26)  VALUE "TOTAL INCOME EARNED     : ".
  197.               05 WS-PRT-TOTAL-INCOME-EARNED     PIC $$$$9.99.
  198.       *
  199.        SCREEN SECTION.
  200.        01 BLANK-SCREEN.
  201.            03 BLANK SCREEN.
  202.        01 PROG-DISCRIPTION.
  203.            03 LINE 1 COLUMN 5      VALUE 
  204.            "A PROGRAM TO PRODUCE CLASSIFIED ADVERTISING INCOME REPORT".
  205.        01 DIS-PROG-TITLE.
  206.            03 LINE 3 COLUMN 1   PIC X(8) FROM WS-TEMP-DATE.
  207.            03 LINE 3 COLUMN 22     HIGHLIGHT VALUE
  208.                                "CLASSIFIED ADVERTISING INCOME REPORT".
  209.            03 LINE 3 COLUMN 65     VALUE "PAGE ".
  210.            03 LINE 3 COLUMN 70  PIC X(8) FROM WS-PAGE-COUNTER.
  211.        01 DIS-RECORD.
  212.            03 LINE 6  COLUMN 5      VALUE "NEWSPAPER NAME          : ".
  213.            03 LINE 6  COLUMN 31 PIC X(25) FROM  WS-PAPER-NAME.
  214.            03 LINE 7  COLUMN 5      VALUE "TYPE OF ADVERT          : ".
  215.            03 LINE 7  COLUMN 31 PIC X(20) FROM  WS-TYPE-OF-AD.
  216.            03 LINE 8  COLUMN 5      VALUE "ACCOUNT NUMBER          : ".
  217.            03 LINE 8  COLUMN 31 PIC 9(6) FROM  WS-ACCOUNT-NUMBER.
  218.            03 LINE 9  COLUMN 5      VALUE "ACCOUNT NAME            : ".
  219.            03 LINE 9  COLUMN 31 PIC X(20) FROM  WS-ACCOUNT-NAME.
  220.            03 LINE 10 COLUMN 5      VALUE "NUMBER OF LINES         : ".
  221.            03 LINE 10 COLUMN 31 PIC 99 FROM  WS-NUMBER-OF-LINES.
  222.            03 LINE 11 COLUMN 5      VALUE "ADVERT'S DURATION (DAYS): ".
  223.            03 LINE 11 COLUMN 31 PIC 999 FROM  WS-AD-DURATION.
  224.            03 LINE 12 COLUMN 5      VALUE "PRICE PER LINE          : $".
  225.            03 LINE 12 COLUMN 32 PIC 9V99 FROM  WS-PRICE-PER-LINE.
  226.            03 LINE 13 COLUMN 5      VALUE "INCOME EARNED           : $".
  227.            03 LINE 13 COLUMN 32 PIC 9(5)V99 FROM  WS-INCOME-EARNED.
  228.            03 LINE 15 COLUMN 5      VALUE "RECORD NUMBER           :  ".
  229.            03 LINE 15 COLUMN 31 PIC 9(4)    FROM  WS-NUMBER-OF-ACCOUNTS.
  230.        01 DIS-TOTALS.
  231.            03 LINE 19 COLUMN 5      VALUE "NUMBER OF ACCOUNTS      : ".
  232.            03 LINE 19 COLUMN 31 PIC 9(4) FROM WS-NUMBER-OF-ACCOUNTS.
  233.            03 LINE 20 COLUMN 5      VALUE "AVERAGE NUMBER OF LINES : ".
  234.            03 LINE 20 COLUMN 31 PIC 9(6) FROM WS-AVG-NUMBER-OF-LINES.
  235.            03 LINE 21 COLUMN 5      VALUE "AVERAGE PRICE PER LINE  : $".
  236.            03 LINE 21 COLUMN 32 PIC 9(4)V99 FROM WS-AVG-PRICE-PER-LINE.
  237.            03 LINE 22 COLUMN 5      VALUE "TOTAL INCOME EARNED     : $".
  238.            03 LINE 22 COLUMN 32 PIC 9(5)V99 FROM WS-TOTAL-INCOME-EARNED.
  239.        01 MENU.
  240.            03 LINE 8  COLUMN 33    UNDERLINE  VALUE "MENU".
  241.            03 LINE 13 COLUMN 22    VALUE "PRESS 'P' to list to PRINTER".
  242.            03 LINE 15 COLUMN 22    VALUE "      'S' to list to SCREEN ".
  243.            03 LINE 17 COLUMN 22    VALUE "      'Q' to quit    MENU   ".
  244.        01 MENU-INPUT.
  245.            03 LINE 20 COLUMN 22    PIC X TO WS-RESPONCE AUTO.
  246.        01 TASK-RUNING.
  247.            03 LINE 23 COLUMN 5     HIGHLIGHT VALUE 
  248.                                             "REPORT NOW BEING PRINTED". 
  249.        01 PROG-FINISH.
  250.            03 LINE 25 COLUMN 1     BLANK LINE.
  251.            03 LINE 25 COLUMN 5     VALUE "TASK COMPLEATE".
  252.        01 ANY-KEY.
  253.            03 LINE 25 COLUMN 48    PIC X TO WS-RESPONCE AUTO.
  254.        01 RESPONCE-LINE.
  255.            03 LINE 25 COLUMN 5     VALUE 
  256.               "PRINT ANY KEY TO CONTINUE ('Q' TO QUIT) > ".
  257.       * 
  258.        01 ERROR-MESSAGES.
  259.            03 LINE 23 COLUMN 5  VALUE 
  260.                      "FILE WOULD NOT OPEN :ADS:PAP:TYP:PRT:".
  261.            03 LINE 24 COLUMN 5  VALUE 
  262.                      "STATUS ERROR CODES  :   :   :   :   :".
  263.            03 LINE 24 COLUMN 26  HIGHLIGHT  PIC XX
  264.               FROM WS-FILE-STATUS.
  265.            03 LINE 24 COLUMN 30  HIGHLIGHT  PIC XX
  266.               FROM WS-PAPER-FILE-STATUS.
  267.            03 LINE 24 COLUMN 34  HIGHLIGHT  PIC XX
  268.               FROM WS-AD-TYPE-STATUS.
  269.            03 LINE 24 COLUMN 38  HIGHLIGHT  PIC XX
  270.               FROM WS-PRINT-STATUS.
  271.       *
  272.        PROCEDURE DIVISION.
  273.       *
  274.       *****************************************************
  275.       *  This paragraph opens all files for either input or output.
  276.       * These files are then tested for errors.An error message is
  277.       * displayed and the program terminated if any errors are found
  278.       * other wise 1000-DISPLAY is performed until WS-STOP-RUN-FLAG
  279.       * equals "S".
  280.       *
  281.        0000-MAIN.
  282.            OPEN INPUT  IN-ADVERT-FILE.
  283.            OPEN INPUT  IN-NEWSPAPER-NAME.
  284.            OPEN INPUT  IN-ADVERT-TYPE.
  285.       *     OPEN OUTPUT OUT-INCOME-REPORT.
  286.                 IF WS-FILE-STATUS       = "00"  AND
  287.                    WS-PAPER-FILE-STATUS = "00"  AND
  288.                    WS-AD-TYPE-STATUS    = "00"  
  289.  
  290.       *AND
  291.       *             WS-PRINT-STATUS      = "00"
  292.  
  293.                          PERFORM 1000-DISPLAY 
  294.                                  UNTIL WS-STOP-RUN-FLAG = "S"
  295.                    ELSE
  296.                          DISPLAY ERROR-MESSAGES.
  297.            CLOSE IN-ADVERT-FILE.
  298.            CLOSE IN-NEWSPAPER-NAME.
  299.            CLOSE IN-ADVERT-TYPE.
  300.       *     CLOSE OUT-INCOME-REPORT.
  301.            STOP RUN.
  302.       *
  303.       **********************************************************
  304.       *  This paragraph displays the program's discription, accepts
  305.       * the system's date then display's a MENU for the user's input.
  306.       * Acceptable input are 'Q' to quit the praragraph and program,
  307.       * 'S' to display the income report on the screen until the
  308.       * end file flag is equal to 'S' or 'P' to display the the income
  309.       * report on the printer, again until the end file flag  equal 'S'.
  310.       *  Note the IN-ADVERT-FILE is closed and opened at the end of this
  311.       * file so that the file pointer is again set to the start of this
  312.       * file.
  313.       *
  314.        1000-DISPLAY.
  315.            MOVE ZEROS TO WS-COUNTERS.
  316.            MOVE SPACE TO WS-END-FILE-FLAG.
  317.            DISPLAY BLANK-SCREEN.
  318.            DISPLAY PROG-DISCRIPTION.
  319.            ACCEPT WS-REAL-DATE FROM DATE.
  320.            MOVE WS-REAL-DAY   TO WS-TEMP-DAY.
  321.            MOVE WS-REAL-MONTH TO WS-TEMP-MONTH.
  322.            MOVE WS-REAL-YEAR  TO WS-TEMP-YEAR.
  323.            DISPLAY DIS-PROG-TITLE. 
  324.  
  325.            DISPLAY MENU.
  326.            ACCEPT  MENU-INPUT.
  327.            IF WS-RESPONCE-Q
  328.                  MOVE "S" TO WS-STOP-RUN-FLAG
  329.                  DISPLAY PROG-FINISH
  330.              ELSE
  331.              IF WS-RESPONCE-S
  332.                    PERFORM 1100-DISPLAY-FILE
  333.                                 UNTIL WS-END-FILE-FLAG = "S"
  334.                ELSE
  335.                IF WS-RESPONCE-P
  336.                       MOVE "S" TO WS-STOP-RUN-FLAG.
  337.  
  338.       *               DISPLAY TASK-RUNING
  339.       *               PERFORM 1210-PRINT-TITLE
  340.       *               PERFORM 1200-PRINT-FILE   
  341.       *                            UNTIL WS-END-FILE-FLAG = "S".
  342.  
  343.            CLOSE      IN-ADVERT-FILE.
  344.            OPEN INPUT IN-ADVERT-FILE.
  345.       *
  346.       **********************************************************
  347.       *  This paragraph display the contents of IN-ADVERT-FILE to the
  348.       * screen until WS-END-FILE-FLAG IS 'S', this can be forced by
  349.       * returning 'Q' for quit at the responce line prompt. The
  350.       * pararagraph performs 1300-READ-FILE to read all files into
  351.       * working storage, these are then displayed to screen by  DISPLAY
  352.       * DIS-RECORD. At the file end or when forced, the file's totals
  353.       * are displayed to the screen by DISPLAY DIS-TOTALS.
  354.       *
  355.        1100-DISPLAY-FILE.
  356.            PERFORM 1300-READ-FILE.
  357.            IF NOT WS-ABORT-READ-FLAG EQUAL  " " 
  358.               DISPLAY (24 5) "READ ABORT WITH CODE "
  359.               WS-ABORT-READ-FLAG
  360.               ACCEPT  MENU-INPUT
  361.               MOVE " " TO WS-ABORT-READ-FLAG
  362.            ELSE
  363.            IF WS-END-FILE-FLAG NOT EQUAL  "S" AND
  364.                 WS-ABORT-READ-FLAG EQUAL  " " 
  365.                 PERFORM 1110-DISPLAY-TITLE
  366.                 ADD 1 TO WS-NUMBER-OF-ACCOUNTS
  367.                 ADD WS-NUMBER-OF-LINES TO WS-TOTAL-LINES
  368.                 MULTIPLY WS-NUMBER-OF-LINES BY WS-PRICE-PER-LINE
  369.                                        GIVING  WS-INCOME-EARNED
  370.                 ADD WS-INCOME-EARNED TO WS-TOTAL-INCOME-EARNED
  371.                 DISPLAY DIS-RECORD
  372.                 DISPLAY RESPONCE-LINE
  373.                 ACCEPT ANY-KEY.
  374.                 IF WS-RESPONCE-Q MOVE "S" TO WS-END-FILE-FLAG.
  375.  
  376.                 IF WS-END-FILE-FLAG EQUAL "S"
  377.                       DIVIDE WS-TOTAL-LINES BY WS-NUMBER-OF-ACCOUNTS
  378.                                        GIVING WS-AVG-NUMBER-OF-LINES
  379.                       DIVIDE WS-TOTAL-INCOME-EARNED BY WS-TOTAL-LINES
  380.                                        GIVING WS-AVG-PRICE-PER-LINE
  381.                       DISPLAY DIS-TOTALS
  382.                       DISPLAY RESPONCE-LINE
  383.                       ACCEPT ANY-KEY.
  384.       *
  385.       **********************************************************
  386.       *  This paragraph increments the page counter then display's 
  387.       * the date, program title and page number by DISPLAY DIS-TITLE.
  388.       *
  389.        1110-DISPLAY-TITLE.
  390.            DISPLAY BLANK-SCREEN.
  391.            DISPLAY PROG-DISCRIPTION.
  392.            ADD 1 TO WS-PAGE-COUNTER.
  393.            DISPLAY DIS-PROG-TITLE.
  394.       *
  395.       **********************************************************
  396.       *  This paragraph display the contents of IN-ADVERT-FILE to the
  397.       * printer until WS-END-FILE-FLAG IS 'S'. The pararagraph performs
  398.       * 1300-READ-FILE to read all files into working storage, these
  399.       * are then displayed to the printer by perform 1220-PRINT-RECORD.
  400.       * At the file's end  the file's totals are displayed to the screen
  401.       * by perform 1230-PRINT-TOTALS. NOTE 1210-PRINT-TITLE is performed
  402.       * initially by the calling paragraph and then when WS-LINE-COUNTER
  403.       * is greater than 55. 
  404.       *
  405.        1200-PRINT-FILE.
  406.            PERFORM 1300-READ-FILE.
  407.            IF WS-END-FILE-FLAG NOT EQUAL  "S"
  408.                  ADD 1 TO WS-NUMBER-OF-ACCOUNTS
  409.                  ADD WS-NUMBER-OF-LINES TO WS-TOTAL-LINES
  410.                  MULTIPLY WS-NUMBER-OF-LINES BY WS-PRICE-PER-LINE
  411.                                         GIVING  WS-INCOME-EARNED
  412.                  ADD WS-INCOME-EARNED TO WS-TOTAL-INCOME-EARNED
  413.  
  414.                  IF WS-LINE-COUNTER GREATER 55
  415.                         PERFORM 1210-PRINT-TITLE
  416.                         PERFORM 1220-PRINT-RECORD
  417.                    ELSE
  418.                         PERFORM 1220-PRINT-RECORD
  419.  
  420.             ELSE
  421.                  DIVIDE WS-TOTAL-LINES BY WS-NUMBER-OF-ACCOUNTS
  422.                                    GIVING WS-AVG-NUMBER-OF-LINES
  423.                  DIVIDE WS-TOTAL-INCOME-EARNED BY WS-TOTAL-LINES
  424.                                    GIVING WS-AVG-PRICE-PER-LINE
  425.                  PERFORM 1230-PRINT-TOTALS.
  426.       *
  427.       **********************************************************
  428.       *  This paragraph increments the page counter then display's 
  429.       * the date, program title and page number by DISPLAY DIS-TITLE.
  430.       *
  431.        1210-PRINT-TITLE.
  432.            ADD 1 TO WS-PAGE-COUNTER.
  433.            MOVE SPACES TO PRT-INCOME-REPORT.
  434.            MOVE WS-TEMP-DATE TO WS-PRT-TEMP-DATE.
  435.            MOVE WS-PAGE-COUNTER TO WS-PRT-PAGE-COUNTER.
  436.            MOVE PRINT-PROG-TITLE TO PRT-INCOME-REPORT.
  437.            WRITE PRT-INCOME-REPORT AFTER PAGE.
  438.            MOVE 1 TO WS-LINE-COUNTER.
  439.       *
  440.       **********************************************************
  441.       *  This paragraph sends the data of the required fields to
  442.       * the printer, then incrementes WS-LINE-COUNTER by 8.
  443.       *
  444.        1220-PRINT-RECORD.
  445.            MOVE SPACES TO PRT-INCOME-REPORT.
  446.            MOVE WS-PAPER-NAME  TO WS-PRT-PAPER-NAME.
  447.            MOVE PRT-PAPER-NAME TO PRT-INCOME-REPORT.
  448.            WRITE PRT-INCOME-REPORT AFTER 2.
  449.  
  450.            MOVE SPACES TO PRT-INCOME-REPORT.
  451.            MOVE WS-TYPE-OF-AD  TO WS-PRT-TYPE-OF-AD.
  452.            MOVE PRT-TYPE-OF-AD TO PRT-INCOME-REPORT.
  453.            WRITE PRT-INCOME-REPORT AFTER 1.
  454.  
  455.            MOVE SPACES TO PRT-INCOME-REPORT.
  456.            MOVE WS-ACCOUNT-NUMBER  TO WS-PRT-ACCOUNT-NUMBER.
  457.            MOVE PRT-ACCOUNT-NUMBER TO PRT-INCOME-REPORT.
  458.            WRITE PRT-INCOME-REPORT AFTER 1.
  459.  
  460.            MOVE SPACES TO PRT-INCOME-REPORT.
  461.            MOVE WS-ACCOUNT-NAME  TO  WS-PRT-ACCOUNT-NAME.
  462.            MOVE PRT-ACCOUNT-NAME TO PRT-INCOME-REPORT.
  463.            WRITE PRT-INCOME-REPORT AFTER 1.
  464.  
  465.            MOVE SPACES TO PRT-INCOME-REPORT.
  466.            MOVE WS-NUMBER-OF-LINES  TO WS-PRT-NUMBER-OF-LINES.
  467.            MOVE PRT-NUMBER-OF-LINES TO PRT-INCOME-REPORT.
  468.            WRITE PRT-INCOME-REPORT AFTER 1.
  469.  
  470.            MOVE SPACES TO PRT-INCOME-REPORT.
  471.            MOVE WS-AD-DURATION  TO WS-PRT-AD-DURATION.
  472.            MOVE PRT-AD-DURATION TO PRT-INCOME-REPORT.
  473.            WRITE PRT-INCOME-REPORT AFTER 1.
  474.  
  475.            MOVE SPACES TO PRT-INCOME-REPORT.
  476.            MOVE WS-PRICE-PER-LINE  TO WS-PRT-PRICE-PER-LINE.
  477.            MOVE PRT-PRICE-PER-LINE TO PRT-INCOME-REPORT.
  478.            WRITE PRT-INCOME-REPORT AFTER 1.
  479.  
  480.            MOVE SPACES TO PRT-INCOME-REPORT.
  481.            MOVE WS-INCOME-EARNED  TO  WS-PRT-INCOME-EARNED.
  482.            MOVE PRT-INCOME-EARNED TO  PRT-INCOME-REPORT.
  483.            WRITE PRT-INCOME-REPORT AFTER 1.
  484.  
  485.            ADD 8 TO WS-LINE-COUNTER.
  486.       *
  487.       **********************************************************
  488.       *  This papragraph sends the required total fields to the printer.
  489.       *
  490.        1230-PRINT-TOTALS.
  491.            MOVE SPACES TO PRT-INCOME-REPORT.
  492.            MOVE WS-NUMBER-OF-ACCOUNTS  TO WS-PRT-NUMBER-OF-ACCOUNTS.
  493.            MOVE PRT-NUMBER-OF-ACCOUNTS TO PRT-INCOME-REPORT.
  494.            WRITE PRT-INCOME-REPORT AFTER 2.
  495.  
  496.            MOVE SPACES TO PRT-INCOME-REPORT.
  497.            MOVE WS-AVG-NUMBER-OF-LINES  TO WS-PRT-AVG-NUMBER-OF-LINES.
  498.            MOVE PRT-AVG-NUMBER-OF-LINES TO PRT-INCOME-REPORT.
  499.            WRITE PRT-INCOME-REPORT AFTER 1.
  500.  
  501.            MOVE SPACES TO PRT-INCOME-REPORT.
  502.            MOVE WS-AVG-PRICE-PER-LINE  TO WS-PRT-AVG-PRICE-PER-LINE.
  503.            MOVE PRT-AVG-PRICE-PER-LINE TO PRT-INCOME-REPORT.
  504.            WRITE PRT-INCOME-REPORT AFTER 1.
  505.  
  506.            MOVE SPACES TO PRT-INCOME-REPORT.
  507.            MOVE WS-TOTAL-INCOME-EARNED  TO WS-PRT-TOTAL-INCOME-EARNED.
  508.            MOVE PRT-TOTAL-INCOME-EARNED TO PRT-INCOME-REPORT.
  509.            WRITE PRT-INCOME-REPORT AFTER 1.
  510.  
  511.            MOVE SPACES TO PRT-INCOME-REPORT.
  512.            WRITE PRT-INCOME-REPORT AFTER 1.
  513.       *
  514.       **********************************************************
  515.       *  This papragraph reads IN-ADVERT-FILE to working storage
  516.       * and sets WS-END-FILE-FLAG, if the end is reached.It also reads
  517.       * IN-NEWSPAPER-NAME and  IN-ADVERT-TYPE to working storage, any
  518.       * errors are indicated in WS-ABORT-READ-FLAG for later DEBUGGING.
  519.       *
  520.        1300-READ-FILE.
  521.            READ IN-ADVERT-FILE INTO WS-ADVERT-FILE 
  522.                    AT END MOVE "S" TO WS-END-FILE-FLAG.
  523.            IF WS-END-FILE-FLAG NOT EQUAL "S"
  524.                 MOVE WS-NEWSPAPER-CODE TO ER-PAPER-CODE
  525.                 READ IN-NEWSPAPER-NAME INTO WS-NEWSPAPER-NAME
  526.                         INVALID KEY MOVE "A" TO WS-ABORT-READ-FLAG.
  527.            IF WS-ABORT-READ-FLAG NOT EQUAL "A"  AND
  528.                 WS-END-FILE-FLAG NOT EQUAL "S"
  529.                 MOVE WS-AD-TYPE-CODE TO ER-IN-AD-CODE
  530.                 READ IN-ADVERT-TYPE INTO WS-ADVERT-TYPE
  531.                         INVALID KEY MOVE "B" TO WS-ABORT-READ-FLAG.
  532.            
  533.       * 
  534.       ***************************************************************
  535.